package cn.com.fssg.platform.modules.system.entity.vo;

import lombok.Data;

import javax.net.ssl.SSLContext;
import java.util.Map;

@Data
public class GdGovRequestVo {
    /**
     * 请求接口地址
     */
    private String url;

    /**
     * 请求方的 appnCode，对应单位用数模块下载的对接信息paasid
     */
    private String paasId;
    /**
     * 请求方申请注册接口，返回的结果中的paasToken
     */
    private String paasToken;
    /**
     * 请求头——服务方的serviceCode，对应单位用数模块下载的对接信息服务编码
     */
    private String serviceId;
    /**
     * 请求头——您（调用者）生成的非重复的随机字符串
     */
    private String nonce;
    /**
     * 请求头时间戳。当前 unix 时间戳，精确到秒。可选，未设置值则默认取当前时间
     */
    private String timestamp;
    /**
     * 请求头的其他扩展参数，可选
     */
    private Map<String, String> headParamExt;

    /**
     * 公共参数——系统 ID，与 api网关的 PaasID相同，对应广东省数据资源“一网共享”平台单位用数模块下载的对接信息 paasid。可选，未设置值则取 {@link CrazyGdgovTest.GdGovRequestVo#paasId}
     */
    private String systemId;
    /**
     * 公共参数——开发公司的统一社会信用代码
     */
    private String venderId;
    /**
     * 公共参数——业主单位的统一社会信用代码
     */
    private String departmentId;
    /**
     * 公共参数——唯一ID,返回结果的请求签名根据uuid生成
     */
    private String uuid;
    /**
     * 公共参数——需求 ID
     */
    private String reqId;
    /**
     * 公共参数——接口业务参数查询条件.非简单类型，即为对象
     */
    private Object query;
    /**
     * 公共参数——推送业务的内容.非简单类型，即为对象
     */
    private Object data;
    /**
     * 公共参数——对数据格式的描述信息， 如请求方式、 数据量、版本、请求唯一 id、请求上下文、分页信息等， 以 json格式编写， 详细请见表 3 metadata参数表
     */
    private Object metadata;

    /**
     * 审计参数——发起者身份证号在政府办事场景， 对应办事人员。在个人查询场景，对应个人本身。发起查询的操作员身份政号码
     */
    private String operatorId;
    /**
     * 审计参数——发起者姓名，可选，不传则默认取当前登录用户
     */
    private String operatorName;
    /**
     * 审计参数——被查询对象唯一标识 身份证号码、统一信用代码、其他敏感数据 id
     */
    private String queryObjectId;
    /**
     * 审计参数——被查询对象唯一标识类型 身份证 01，... （对齐证件类型）,粤省事类型88,其他待扩充
     */
    private String queryObjectIdType;
    /**
     * 审计参数——事项基本编码，依据政务事项目录确定，可扩展
     * (若确认无事项编码，可跟广东省数据资源“一网共享” 平台协商确定编码用于替代事项基本编码)无事项用数可置空
     */
    private String itemId;
    /**
     * 审计参数——事项实施编码
     */
    private String itemCode;
    /**
     * 审计参数——事项环节
     */
    private String itemSequence;
    /**
     * 审计参数——发起查询的 IP（或者发起源），如经过多个服务则以填写最源头的 IP
     */
    private String terminalInfo;
    /**
     * 源头调用时间，精确到毫秒。可选，未设置值则默认取当前时间
     */
    private String queryTimestamp;

    private SSLContext sslContext;
}
